package com.link2room.jetfire.dto.result.base;

import com.link2room.common.annotation.L2RDatetimeString;
import com.link2room.common.annotation.L2RDes;
import com.link2room.common.dto.result.base.BaseDto;
import com.link2room.common.util.DateUtil;
import com.link2room.jetfire.constant.JetfireDescriptPrefixKeyConstant;

import java.math.BigDecimal;
import java.util.Date;

/**
 * Created by sss on 2016/9/20.
 */
public class ReservationBaseDto extends BaseDto {
    /**
     * 活动代码
     */
    private String mcCode;
    /**
     * 产品代码
     */
    private String mcdCode;
    /**
     * 产品名称
     */
    private String mcdName;
    private String mcdNameEn;
    /**
     * 会员号
     */
    private String memberNo;
    /**
     * 微信OPENID
     */
    private String openid;
    /**
     * 房型
     */
    private String rmtype;
    /**
     * 酒店名称
     */
    private String hotelName;
    private String hotelNameEn;
    /**
     * 房型名称
     */
    private String rmtypeName;
    private String rmtypeNameEn;
    /**
     * 房数
     */
    private Integer roomNum;
    /**
     * 房号
     */
    private String roomNo;
    /**
     * 到店日期
     */
    private Date arr;
    /**
     * 离店日期
     */
    private Date dep;
    /**
     * 到店日期
     */
    @L2RDatetimeString(source ="arr" )
    private String arrtime;
    /**
     * 离店日期
     */
    @L2RDatetimeString(source ="dep" )
    private String deptime;
    /**
     * 成人数
     */
    private Integer adult;
    /**
     * 小孩数
     */
    private Integer children;
    /**
     * 是否确认状态，NOTCFMD未确认，AUTOCFMD自动确认，AUTOREJ自动拒绝，MANUCFMD人工确认,MANUREJ人工拒绝
     */
    private String confirmSta;
    /**
     * 是否确认状态描述，NOTCFMD未确认，AUTOCFMD自动确认，AUTOREJ自动拒绝，MANUCFMD人工确认,MANUREJ人工拒绝
     */
    @L2RDes(value = JetfireDescriptPrefixKeyConstant.RESERVATION_CONFIRMSTA,source = "confirmSta")
    private String confirmStaDes;
    @L2RDes(value = JetfireDescriptPrefixKeyConstant.RESERVATION_CONFIRMSTAEN,source = "confirmSta")
    private String confirmStaDesEn;
    /**
     * 订单状态 R预订，X取消，I入住，O结账，S挂账
     */
    private String resSta;
    /**
     * 订单状态 R预订，X取消，I入住，O结账，S挂账
     */
    @L2RDes(value = JetfireDescriptPrefixKeyConstant.RESERVATION_RESSTA,source = "resSta")
    private String resStaDes;
    @L2RDes(value = JetfireDescriptPrefixKeyConstant.RESERVATION_RESSTAEN,source = "resSta")
    private String resStaDesEn;
    /**
     * 订单来源，WEB官网，WECHAT微信,APP应用程序，TMALL天猫
     */
    private String pbChannel;
    /**
     * 订单来源，WEB官网，WECHAT微信,APP应用程序，TMALL天猫
     */
    @L2RDes(value = JetfireDescriptPrefixKeyConstant.RESERVATION_PBCHANNEL,source = "pbChannel")
    private String pbChannelDes;
    @L2RDes(value = JetfireDescriptPrefixKeyConstant.RESERVATION_PBCHANNELEN,source = "pbChannel")
    private String pbChannelDesEn;
    /**
     * 订单类型，PRE预付，CASH现付，CREDIT信用，GROUP团购，FREE免费
     */
    private String resType;
    /**
     * 订单类型，PRE预付，CASH现付，CREDIT信用，GROUP团购，FREE免费
     */
    @L2RDes(value = JetfireDescriptPrefixKeyConstant.RESERVATION_RESTYPE,source = "resType")
    private String resTypeDes;
    @L2RDes(value = JetfireDescriptPrefixKeyConstant.RESERVATION_RESTYPEEN,source = "resType")
    private String resTypeDesEn;
    /**
     * 预订人姓名，仅做备注
     */
    private String rsvMan;
    /**
     * 预订单位名称，仅做备注
     */
    private String rsvCompany;
    /**
     * 预订人手机
     */
    private String rsvMobile;
    /**
     * 预订人电话
     */
    private String rsvTel;
    /**
     * 预订人传真
     */
    private String rsvFax;
    /**
     * 预订人email
     */
    private String rsvEmail;
    /**
     * 预订人 档案Id
     */
    private String rsvProfileNo;
    /**
     * 终端订单号
     */
    private String terminalNo;
    /**
     * 渠道订单号
     */
    private String channelNo;
    /**
     * 联房订单号
     */
    private String l2RNo;
    /**
     * crs订单号
     */
    private String crsNo;
    /**
     * pms订单号
     */
    private String pmsNo;
    /**
     * 预付未支付取消时间
     */
    private Date cancelDate;
    /**
     * 预付未支付取消时间
     */
    @L2RDatetimeString(source = "cancelDate")
    private String cancelDatetime;
    /**
     * PMS房价码
     */
    private String pmsRatecode;
    /**
     * 是否使用积分
     */
    private String isUsePoint;

    private BigDecimal amount;

    private String remark;
    private String coMsg;
    private String showCancelDateStr;
    /**
     * 是否下单到PMS
     */
    private String isToPms;

    private String cancelRemark;

    private String cancelFlag;

    private String refundRemark;

    /**
     * 发起取消时间
     */
    private Date realCancelDate;

    private Integer stayNum;

    private Date createTime;

    public String getMcCode() {
        return mcCode;
    }

    public void setMcCode(String mcCode) {
        this.mcCode = mcCode;
    }

    public String getMcdCode() {
        return mcdCode;
    }

    public void setMcdCode(String mcdCode) {
        this.mcdCode = mcdCode;
    }

    public String getMcdName() {
        return mcdName;
    }

    public void setMcdName(String mcdName) {
        this.mcdName = mcdName;
    }

    public String getMemberNo() {
        return memberNo;
    }

    public void setMemberNo(String memberNo) {
        this.memberNo = memberNo;
    }

    public String getOpenid() {
        return openid;
    }

    public void setOpenid(String openid) {
        this.openid = openid;
    }

    public Integer getRoomNum() {
        return roomNum;
    }

    public void setRoomNum(Integer roomNum) {
        this.roomNum = roomNum;
    }

    public String getRoomNo() {
        return roomNo;
    }

    public void setRoomNo(String roomNo) {
        this.roomNo = roomNo;
    }

    public Date getArr() {
        return arr;
    }

    public void setArr(Date arr) {
        this.arr = arr;
    }

    public Date getDep() {
        return dep;
    }

    public void setDep(Date dep) {
        this.dep = dep;
    }

    public Integer getAdult() {
        return adult;
    }

    public void setAdult(Integer adult) {
        this.adult = adult;
    }

    public Integer getChildren() {
        return children;
    }

    public void setChildren(Integer children) {
        this.children = children;
    }

    public String getConfirmSta() {
        return confirmSta;
    }

    public void setConfirmSta(String confirmSta) {
        this.confirmSta = confirmSta;
    }

    public String getResSta() {
        return resSta;
    }

    public void setResSta(String resSta) {
        this.resSta = resSta;
    }

    public String getResType() {
        return resType;
    }

    public void setResType(String resType) {
        this.resType = resType;
    }

    public String getRsvMan() {
        return rsvMan;
    }

    public void setRsvMan(String rsvMan) {
        this.rsvMan = rsvMan;
    }

    public String getRsvCompany() {
        return rsvCompany;
    }

    public void setRsvCompany(String rsvCompany) {
        this.rsvCompany = rsvCompany;
    }

    public String getRsvMobile() {
        return rsvMobile;
    }

    public void setRsvMobile(String rsvMobile) {
        this.rsvMobile = rsvMobile;
    }

    public String getRsvTel() {
        return rsvTel;
    }

    public void setRsvTel(String rsvTel) {
        this.rsvTel = rsvTel;
    }

    public String getRsvFax() {
        return rsvFax;
    }

    public void setRsvFax(String rsvFax) {
        this.rsvFax = rsvFax;
    }

    public String getRsvEmail() {
        return rsvEmail;
    }

    public void setRsvEmail(String rsvEmail) {
        this.rsvEmail = rsvEmail;
    }

    public String getRsvProfileNo() {
        return rsvProfileNo;
    }

    public void setRsvProfileNo(String rsvProfileNo) {
        this.rsvProfileNo = rsvProfileNo;
    }

    public String getTerminalNo() {
        return terminalNo;
    }

    public void setTerminalNo(String terminalNo) {
        this.terminalNo = terminalNo;
    }

    public String getChannelNo() {
        return channelNo;
    }

    public void setChannelNo(String channelNo) {
        this.channelNo = channelNo;
    }

    public String getL2RNo() {
        return l2RNo;
    }

    public void setL2RNo(String l2RNo) {
        this.l2RNo = l2RNo;
    }

    public String getCrsNo() {
        return crsNo;
    }

    public void setCrsNo(String crsNo) {
        this.crsNo = crsNo;
    }

    public String getPmsNo() {
        return pmsNo;
    }

    public void setPmsNo(String pmsNo) {
        this.pmsNo = pmsNo;
    }

    public String getConfirmStaDes() {
        return confirmStaDes;
    }

    public void setConfirmStaDes(String confirmStaDes) {
        this.confirmStaDes = confirmStaDes;
    }

    public String getResStaDes() {
        return resStaDes;
    }

    public void setResStaDes(String resStaDes) {
        this.resStaDes = resStaDes;
    }

    public String getResTypeDes() {
        return resTypeDes;
    }

    public void setResTypeDes(String resTypeDes) {
        this.resTypeDes = resTypeDes;
    }

    public String getPbChannel() {
        return pbChannel;
    }

    public void setPbChannel(String pbChannel) {
        this.pbChannel = pbChannel;
    }

    public String getPbChannelDes() {
        return pbChannelDes;
    }

    public void setPbChannelDes(String pbChannelDes) {
        this.pbChannelDes = pbChannelDes;
    }

    public String getArrtime() {
        return arrtime;
    }

    public void setArrtime(String arrtime) {
        this.arrtime = arrtime;
        setArr(DateUtil.parseDateNewFormat(arrtime));
    }

    public String getDeptime() {
        return deptime;
    }

    public void setDeptime(String deptime) {
        this.deptime = deptime;
        setDep(DateUtil.parseDateNewFormat(deptime));
    }

    public Date getCancelDate() {
        return cancelDate;
    }

    public void setCancelDate(Date cancelDate) {
        this.cancelDate = cancelDate;
        if(cancelDate!=null) {
            setShowCancelDateStr(DateUtil.getNewFormatDateString(DateUtil.addMinutes(cancelDate, -5L)));
        }
    }

    public String getCancelDatetime() {
        return cancelDatetime;
    }

    public void setCancelDatetime(String cancelDatetime) {
        this.cancelDatetime = cancelDatetime;
    }

    public String getRmtype() {
        return rmtype;
    }

    public void setRmtype(String rmtype) {
        this.rmtype = rmtype;
    }

    public String getHotelName() {
        return hotelName;
    }

    public void setHotelName(String hotelName) {
        this.hotelName = hotelName;
    }

    public String getRmtypeName() {
        return rmtypeName;
    }

    public void setRmtypeName(String rmtypeName) {
        this.rmtypeName = rmtypeName;
    }

    public String getPmsRatecode() {
        return pmsRatecode;
    }

    public void setPmsRatecode(String pmsRatecode) {
        this.pmsRatecode = pmsRatecode;
    }

    public String getIsUsePoint() {
        return isUsePoint;
    }

    public void setIsUsePoint(String isUsePoint) {
        this.isUsePoint = isUsePoint;
    }

    public BigDecimal getAmount() {
        return amount;
    }

    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getCoMsg() {
        return coMsg;
    }

    public void setCoMsg(String coMsg) {
        this.coMsg = coMsg;
    }

    public String getShowCancelDateStr() {
        return showCancelDateStr;
    }

    public void setShowCancelDateStr(String showCancelDateStr) {
        this.showCancelDateStr = showCancelDateStr;
    }

    public String getIsToPms() {
        return isToPms;
    }

    public void setIsToPms(String isToPms) {
        this.isToPms = isToPms;
    }

    public String getCancelRemark() {
        return cancelRemark;
    }

    public void setCancelRemark(String cancelRemark) {
        this.cancelRemark = cancelRemark;
    }

    public String getCancelFlag() {
        return cancelFlag;
    }

    public void setCancelFlag(String cancelFlag) {
        this.cancelFlag = cancelFlag;
    }

    public String getRefundRemark() {
        return refundRemark;
    }

    public void setRefundRemark(String refundRemark) {
        this.refundRemark = refundRemark;
    }

    public Date getRealCancelDate() {
        return realCancelDate;
    }

    public void setRealCancelDate(Date realCancelDate) {
        this.realCancelDate = realCancelDate;
    }

    public Integer getStayNum() {
        return stayNum;
    }

    public void setStayNum(Integer stayNum) {
        this.stayNum = stayNum;
    }

    public String getMcdNameEn() {
        return mcdNameEn;
    }

    public void setMcdNameEn(String mcdNameEn) {
        this.mcdNameEn = mcdNameEn;
    }

    public String getHotelNameEn() {
        return hotelNameEn;
    }

    public void setHotelNameEn(String hotelNameEn) {
        this.hotelNameEn = hotelNameEn;
    }

    public String getRmtypeNameEn() {
        return rmtypeNameEn;
    }

    public void setRmtypeNameEn(String rmtypeNameEn) {
        this.rmtypeNameEn = rmtypeNameEn;
    }

    public String getConfirmStaDesEn() {
        return confirmStaDesEn;
    }

    public void setConfirmStaDesEn(String confirmStaDesEn) {
        this.confirmStaDesEn = confirmStaDesEn;
    }

    public String getResStaDesEn() {
        return resStaDesEn;
    }

    public void setResStaDesEn(String resStaDesEn) {
        this.resStaDesEn = resStaDesEn;
    }

    public String getPbChannelDesEn() {
        return pbChannelDesEn;
    }

    public void setPbChannelDesEn(String pbChannelDesEn) {
        this.pbChannelDesEn = pbChannelDesEn;
    }

    public String getResTypeDesEn() {
        return resTypeDesEn;
    }

    public void setResTypeDesEn(String resTypeDesEn) {
        this.resTypeDesEn = resTypeDesEn;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}
